package com.etiya.bean;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;



import javax.faces.model.SelectItem;
import javax.persistence.EntityManager;

import com.etiya.baglanti.EntityUtil;
import com.etiya.entity.Dil;
import com.etiya.entity.KitapBilgileri;
import com.etiya.entity.KitapTurBilgileri;
import com.etiya.entity.YazarBilgileri;

@SuppressWarnings("unchecked")
public class KitapKayitBean implements Serializable {

	public KitapKayitBean() {

		turBilgileri();

		yazarBilgileri();

		dil();
	}

	private static final long serialVersionUID = -844049583964498492L;

	private List<SelectItem> dilTurleriListesi = new ArrayList<SelectItem>();

	private List<SelectItem> yazarListesi = new ArrayList<SelectItem>();

	private List<SelectItem> kitapTurBilgileri = new ArrayList<SelectItem>();

	private KitapBilgileri kitapBilgileri = new KitapBilgileri();

	private Dil dil = new Dil();

	public void setKitapBilgileri(KitapBilgileri kitapBilgileri) {
		this.kitapBilgileri = kitapBilgileri;
	}

	public KitapBilgileri getKitapBilgileri() {
		return kitapBilgileri;
	}

	public void setKitapTurBilgileri(List<SelectItem> kitapTurBilgileri) {
		this.kitapTurBilgileri = kitapTurBilgileri;
	}

	public List<SelectItem> getKitapTurBilgileri() {
		return kitapTurBilgileri;
	}

	public void setDilTurleriListesi(List<SelectItem> dilTurleriListesi) {
		this.dilTurleriListesi = dilTurleriListesi;
	}

	public List<SelectItem> getDilTurleriListesi() {
		return dilTurleriListesi;
	}

	public void setDil(Dil dil) {
		this.dil = dil;
	}

	public Dil getDil() {
		return dil;
	}

	public String kayit() {


			EntityManager em = EntityUtil.getEntityManager();

			em.getTransaction().begin();
			em.persist(kitapBilgileri);
			em.getTransaction().commit();

			kitapBilgileri = new KitapBilgileri();

		return null;
	}

	public List<KitapBilgileri> getKitaplistesi() {

		EntityManager em = EntityUtil.getEntityManager();

		List<KitapBilgileri> dnm = em
				.createQuery(
						"select kitap from KitapBilgileri kitap join fetch kitap.turId")
				.getResultList();

		return dnm;
	}

	public String  sil() {
		
		
		EntityManager em = EntityUtil.getEntityManager();	
		
		try {
			
				em.getTransaction().begin();
				
				KitapBilgileri kitap=em.find(KitapBilgileri.class, kitapBilgileri.getISBN());
				em.remove(kitap);
				em.getTransaction().commit();				
				kitapBilgileri = new KitapBilgileri();				
		} catch (Exception e) {
			if(em.getTransaction().isActive())
			em.getTransaction().rollback();
		    e.printStackTrace();
	
		}
		
	
		return null;
	}

	public void dil() {

		EntityManager em = EntityUtil.getEntityManager();

		List<Dil> dilListesi = em.createQuery("from Dil").getResultList();

		for (Dil dil : dilListesi) {

			dilTurleriListesi.add(new SelectItem(dil.getDilId(), dil
					.getDilTipi()));

		}

	}

	public List<Dil> getDilList() {
		EntityManager em = EntityUtil.getEntityManager();
		return em.createQuery("from Dil").getResultList();
	}

	public String duzenle() {

		EntityManager em = EntityUtil.getEntityManager();
		em.getTransaction().begin();
		em.merge(kitapBilgileri);
		em.getTransaction().commit();
		kitapBilgileri = new KitapBilgileri();

		return null;
	}

	public String yeni() {

		kitapBilgileri = new KitapBilgileri();

		return null;
	}

	public void turBilgileri() {

		EntityManager em = EntityUtil.getEntityManager();

		List<KitapTurBilgileri> kitap = em.createQuery(
				"select k from KitapTurBilgileri k").getResultList();

		for (KitapTurBilgileri kitap2 : kitap) {
			kitapTurBilgileri.add(new SelectItem(kitap2.getId(),kitap2.getTurAd()));					
		}

	}

	private void yazarBilgileri() {

		EntityManager em = EntityUtil.getEntityManager();

		List<YazarBilgileri> yazarList = em.createQuery("from YazarBilgileri")
				.getResultList();

		for (YazarBilgileri yazar : yazarList) {

			yazarListesi.add(new SelectItem(yazar.getYazarId(), yazar
					.getYazarAdi() + " " + yazar.getYazarSoyadi()));
		}
	}

	public void setYazarListesi(List<SelectItem> yazarListesi) {
		this.yazarListesi = yazarListesi;
	}

	public List<SelectItem> getYazarListesi() {
		return yazarListesi;
	}

	// public String dilValidator(FacesContext context,UIComponent
	// componentToValidate, Object value) throws ValidatorException{
	//
	// System.out.println("value================>"+value);
	//
	// return null;
	// }

}
